序列操作函数

最近更新时间: 2024-10-17 17:10:00

序列对象被称为序列生成器或序列,使用 CREATE SEQUENCE 创建的特殊单行表,通常用于为表的行生成唯一标识符。

序列是非事务的,setval 造成的改变不会因事务的回滚而撤销。

常用的序列函数如下:

函数 返回值 描述
currval(regclass) bigint 返回最近一次用 nextval 获取的指定序列的值
lastval() bigint 返回最近一次用 nextval 获取的任何序列的值
nextval(regclass) bigint 递增序列并返回新值
setval(regclass, bigint) bigint 设置序列的当前值
setval(regclass, bigint, boolean) bigint 设置序列的当前值以及 is_called 标志

示例:

postgres=# CREATE SEQUENCE seq;
CREATE SEQUENCE
postgres=# SELECT nextval('seq');
nextval 
---------
   1
(1 row)

postgres=# SELECT nextval('seq');
nextval 
---------
   2
(1 row)

postgres=# SELECT currval('seq');
currval 
---------
   2
(1 row)

postgres=# SELECT setval('seq',188);
setval 
--------
 188
(1 row)

postgres=# SELECT currval('seq');
currval 
---------
  188
(1 row)

postgres=# SELECT lastval();
lastval 
---------
  188
(1 row)